Search

蠻有趣的詞:「低代碼」。

簡單的說,原本要完成一件事需要 programmer...

  • Share this:

蠻有趣的詞:「低代碼」。

簡單的說,原本要完成一件事需要 programmer 寫的程式碼量,因為一些解決方案而有機會讓不太懂寫程式的人,透過設定或簡易一點的方式來完成一些代碼的設定,就能看到讓人「驚艷」的成果。

註:這個驚艷通常有一定的比例來自於「不懂寫程式的人」能做出「這樣的成果」

這一篇文章提到的低代碼是行業毒瘤,裡面一些論述點我蠻有共鳴的(有一些則是覺得並非該強調的重點),但這的確是個該留意的議題。

其實用 programmer 去寫程式完成某一項工作的成本是不低的。只是大家在這一行,身為這個角色,會覺得這不難,卻忽略了一樣的時間你可能可以創造更多其他的價值。(價值優先) 這也是類似 design thinking 中為何要用低成本先驗證可行性與價值的概念。

拉回來主軸,我自己過去對「低代碼」這類的擔憂,最常見的就是 Robot framework VS cucumber.

如果 enterprise application 產品夠大、夠複雜、夠重要,那其對應的自動化測試(尤其是 end-to-end)肯定也是同樣產品量級的測試系統。

與其總是想著讓一堆不會寫程式,尤其是「不願意學」寫程式的人,能用哪些方式少寫一些測試程式,最終付出的代價是,前期投入的成本都將毀於一旦。因為當產品越來越複雜時,測試程式也會越來越複雜。

甚至測試程式還會依賴許多 “DevOps” (developer + operation 的工作範圍)都得碰到的相關內容,例如用 docker 起一座 redis,例如怎麼清理與初始化測試資料。

越不想碰程式碼,最後就會一直繞路,或是把一些「限制」視為理所當然。那些事情對 developer 來說,可能就是平時的工作之一,但對不諳程式的測試人員來說就是天方夜譚。

越是這樣把職責角色分開的組織,他們的開發人員往往越是覺得測試是測試人員的工作,他們就是負責把關(甚至覺得他們是專門找碴的),我的工作是負責開發,不是測試。如果我去寫測試程式,那誰要開發?

所以退10步來看全貌,我們很常讓不會、不愛、不想寫程式的測試人員,試著去自動化測試。我們讓會寫程式的人員,覺得測試是測試人員的事,開發人員只要想辦法在時間內做完功能交付(往往品質低落)。

而我們真正希望的目標是產品交付能有比較好的品質,產品交付速度不會因為規模而導致交付時間冪次上升。

讓真正的「測試」人員(不是做那種已知的 check/validation)去做那些未知的、發散思維的探索,甚至讓他們結合 UX/UI 找到更好使用產品的動線與方式,讓他們產出並指導其他人來進行這些已知的 check 動作自動化(最好他們也願意參與、動手自動化的過程),讓開發人員有認知:產品就是我們的小孩,品質跟功能都是我們要 cover 的,開發跟測試是一體兩面的,我們對測試思路與角度的短板,團隊中能有專業的測試人員來互補。

我們能在開始動手開發功能之前,知道這樣的功能是為了給
1.「怎樣的使用者」
2.「解決怎樣的問題」
3.「帶來怎樣的好處」

而這樣的功能提供使用者「哪些使用的情境與方式」。

當我開發完功能之後,我至少能模擬出來各種使用者會碰到的使用場景,功能要如預期般運作。(白話一點,簡單一點,就是問後面把關的測試人員,如果這個功能做出來,你會測試那些東西、怎麼測,再把他講出來的內容,思考哪些動作跟環節可以自動化,這是一個合作的過程,往往因應搭配自動化,會需要微調他們的測試方式)

這中間當然就會應用到 #實例化需求,而這基本的概念才是 #測試左移 的原型。

議題跑得有點遠了,「低代碼」用對地方,就是事半功倍,用錯地方,就是在基礎建設埋了顆地雷,未來爆掉時付出的代價將相當艱鉅。

怎麼評估用對地方、用錯地方?

第一,核心的部分避免用低代碼思維去貪快走捷徑,總有一天要還的。

第二,讓懂得寫程式的人來決定哪些地方適合用低代碼,也讓他為未來衍生的代價負責。

第三,與商業價值的平衡。如果就是埋一顆地雷可以讓公司活下來,評估有著大量的商業價值值得冒險,那就找專業一點的人埋地雷,讓他評估未來抽換掉地雷時,不會導致整個大樓付之一炬。


另外一點就是關於招募的。

招了不想寫程式的人,再來想辦法改變他們,讓他們學寫程式,當然事倍功半。

因為他們不想寫程式,所以找一些低代碼的解決方案,可能是種飲鴆止渴。

就像找了一堆需要被管理的人進來,希望他們能自組織、自我管理,當然就擔心東擔心西。

然後再訂了一堆指標來衡量評估他們是否有認真工作,有產出對應得了薪水的價值。

再聘專門管理工作的管理者來管這些需要被管理的人。

如果源頭就是找到能自我管理的人,會不會省了很多「希望能改變他們」的動作呢?

找了一些不懂也不想,甚至也不會持續自我學習的人進來,然後希望弄點內訓、活動、team building, 讀書會,就希望他們具有團隊學習能力,甚至學習型組織,會不會太樂觀了一點?


Tags:

About author
我是 Joey Chen,闖蕩江湖的稱號是 91,熱血點火師,專門燃起大家心裡面的熱情與初衷。 目前為 Odd-e Taiwan 的負責人,同時也是 JetBrains 在台灣的培訓夥伴,至今也仍是熱愛學習與享受各種程式語言之美的 programmer。 身為敏捷教練,擅長 Agile、Scrum、LeSS 等敏捷文化與協作框架的落實與導入,如何讓大家 being agile 而不是 doing agile。同時喜歡結合各家所長,例如 Lean, Kanban 等,重點是持續改善、解決問題、端出成果,而不執著於某種特定方法論或框架。 身為技術教練,我也是極限編程(extreme programming)的狂熱者,我擅長用這些技術與工程實踐來提昇產品的品質、團隊的生產力、降低營運風險,因應市場與公司的商業目標,讓團隊能具有高適應與反應能力的基礎建設。例如 實例化需求、ATDD、BDD、TDD、重構、自動化單元測試/整合測試/驗收測試、CI/CD、code review、pair programming、mob-programming 等等。 同時,我也是推崇 極速開發 的 developer,追求從想法到產品程式碼的完成,中間的時間差能趨近於零,也就是劍隨心轉,想到哪,程式碼就長到哪的境界。從想法到實現中間的等待,其實在實務上佔了很大的 context switch 成本,如果能讓這段時間縮到最短,就能比其他人多嘗試更多種解決方案,進而挑選出最剛好的方案。 同時也是技術社群的活躍份子,從 2010 年開始連任九屆的微軟 MVP,兼任 MSDN 論壇板主,也曾經獲得年度 MSDN 文件庫刊登數量世界第一的榮耀。對微軟技術有愛,對 C# 有愛,對自動測試有愛,對重構與設計模式有愛。近年來對 Java, PHP, Python 也充滿濃厚的興趣,曾帶領客戶團隊中不會寫程式的 QA ,一起用 Python 完成超過百個 mobile UI 自動化測試。 擁有超過十年擔任開發團隊 tech leader, trainer, coach 與 mentor 的經驗,進行的企業內部與公開技術培訓課程已超過 100 場,培訓過的開發人員超過 1000 位,擔任研討會與社群活動的講師次數超過 30 次。 同時也是技術書籍的作者與譯者,與朋友合著的書籍包含《ASP.NET MVC 5:網站開發美學》、《ASP.NET MVC 4 網站開發美學》,翻譯的書籍有《單元測試的藝術-第二版》、《敏捷開發實踐》、《進入IT產業必讀的200個 .NET面試決勝題》。 如果想跟我即時互動,歡迎直接私訊或 email 至 [email protected]
請參考:https://tdd.best/about/
View all posts